#pragma once

#if defined (GK_DEVICE_DIRECTX9)

	#include <d3dx9.h>

	#include "DirectX9/GkStreamDescription.DirectX9.h"
	#include "DirectX9/GkTexture.DirectX9.h"
	#include "DirectX9/GkBuffer.DirectX9.h"
	#include "DirectX9/GkConstantBuffer.DirectX9.h"
	#include "DirectX9/GkRenderSurface.DirectX9.h"
	#include "DirectX9/GkRenderTarget.DirectX9.h"
	#include "DirectX9/GkGpuProgram.DirectX9.h"
	#include "DirectX9/GkRenderBinding.DirectX9.h"
	#include "DirectX9/GkStateBlock.DirectX9.h"
	#include "DirectX9/GkContext.DirectX9.h"

#elif defined (GK_DEVICE_DIRECTX10)

	#include <d3dx10.h>

	#include "DirectX10/GkStreamDescription.DirectX10.h"
	#include "DirectX10/GkTexture.DirectX10.h"
	#include "DirectX10/GkBuffer.DirectX10.h"
	#include "DirectX10/GkConstantBuffer.DirectX10.h"
	#include "DirectX10/GkRenderSurface.DirectX10.h"
	#include "DirectX10/GkRenderTarget.DirectX10.h"
	#include "DirectX10/GkGpuProgram.DirectX10.h"
	#include "DirectX10/GkRenderBinding.DirectX10.h"
	#include "DirectX10/GkStateBlock.DirectX10.h"
	#include "DirectX10/GkContext.DirectX10.h"

#elif defined (GK_DEVICE_DIRECTX11)

	#include <d3dx11.h>
	
	#include "DirectX11/GkStreamDescription.DirectX11.h"
	#include "DirectX11/GkTexture.DirectX11.h"
	#include "DirectX11/GkBuffer.DirectX11.h"
	#include "DirectX11/GkConstantBuffer.DirectX11.h"
	#include "DirectX11/GkRenderSurface.DirectX11.h"
	#include "DirectX11/GkRenderTarget.DirectX11.h"
	#include "DirectX11/GkGpuProgram.DirectX11.h"
	#include "DirectX11/GkRenderBinding.DirectX11.h"
	#include "DirectX11/GkStateBlock.DirectX11.h"
	#include "DirectX11/GkContext.DirectX11.h"

#elif defined (GK_DEVICE_OPENGL)

	#include "../../sdk/glee/GLee.h"
	#include <gl/glu.h>

	#include "OpenGL/GkStreamDescription.OpenGL.h"
	#include "OpenGL/GkTexture.OpenGL.h"
	#include "OpenGL/GkBuffer.OpenGL.h"
	#include "OpenGL/GkConstantBuffer.OpenGL.h"
	#include "OpenGL/GkRenderSurface.OpenGL.h"
	#include "OpenGL/GkRenderTarget.OpenGL.h"
	#include "OpenGL/GkGpuProgram.OpenGL.h"
	#include "OpenGL/GkRenderBinding.OpenGL.h"
	#include "OpenGL/GkStateBlock.OpenGL.h"
	#include "OpenGL/GkContext.OpenGL.h"

#elif defined (GK_DEVICE_NULL)

	#include "Null/GkStreamDescription.Null.h"
	#include "Null/GkTexture.Null.h"
	#include "Null/GkBuffer.Null.h"
	#include "Null/GkConstantBuffer.Null.h"
	#include "Null/GkRenderSurface.Null.h"
	#include "Null/GkRenderTarget.Null.h"
	#include "Null/GkGpuProgram.Null.h"
	#include "Null/GkRenderBinding.Null.h"
	#include "Null/GkStateBlock.Null.h"
	#include "Null/GkContext.Null.h"

#else

	#error No supported device specified

#endif 

